home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / nyan_e2 / nyane2dl.plp < prev    next >
Text File  |  1993-11-30  |  10KB  |  414 lines

  1. /**********   ライブラリからのダウンロード処理をする  v1.04a用   **********/
  2.  
  3. %LibLine  {20};    /* ライブラリリストのログが有る場合に取得する行数 (9~99) */
  4. %NoLibLog {50};    /* ライブラリリストのログが無い場合に取得する行数 (9~99) */
  5.  
  6. %ReadOnes{
  7.     %ReqForum    @getchar(IndexLine,14,8);
  8.     %ReqMes        @getchar(IndexLine,23,2);
  9.     %fname        @head(ReqForum,{ });
  10.     %DataFile    @head(@getchar(IndexLine,4,3),{ });
  11.     %ForumDir    logd|{\}|fname;
  12.     %ccs1{
  13.         case(FMesNO<>ReqMes,{Yes},{
  14.             case(FMesNO<>{},{Yes},{
  15.                 type({RX }|ReqMes|{\n});
  16.                 FMesNO:=ReqMes;
  17.                 wait(30,{TimeOut},{\nCCS(N)>},,
  18.                     {\nCCS(P)>});
  19.             });
  20.         });
  21.     };
  22.     %read2{
  23.         %LogFile    ForumDir|{\MES}|ReqMes|{.LOG};
  24.         receive(LogFile);
  25.         type(@read(logd|{\UP\MES}|DataFile|{.TXT}));
  26.         loop({    wait(3600,{TimeOut},
  27.             {\nnext>},    {type({\n}); im({Yes})},
  28.             {\nCCS(N)>},    {stoprec; type({RC D\n}); im({No})},
  29.             {\nCCS(P)>},    {stoprec; type({RC D\n}); im({No})},
  30.             {\n◆現在未読の},{stoprec; im({No})}
  31.             );
  32.         });
  33.         wait(60,{TimeOut},{\nCCS(N)>},,{\nCCS(P)>});
  34.     };
  35.     footnote({ 個々の発言を取得しています});
  36.     case(Where1<>{FORUM} || Where2<>ReqForum,{Yes},{
  37.         GoForum(ReqForum);
  38.         type({SET PAUSE OFF\n});
  39.         wait(30,{TimeOut},{\nFORUM>});
  40.         mkdir(logd,fname);
  41.     /*    rec2(ForumDir|{\mestitle.log});
  42.         type({MES\n});
  43.         wait(30,{TimeOut},{\n>});
  44.         stoprec;*/
  45.     });
  46.     case(1<=ReqMes && ReqMes<=21,{Yes},{
  47.         test(,{
  48.             type({MES }|ReqMes|{\n});
  49.             Where3:={MES};
  50.             FMesNO:=ReqMes;
  51.             wait(60,{TimeOut},{\nCCS(N)>},,{\nCCS(P)>},,{\n>});
  52.         },{\nCCS(N)>},{ ccs1;
  53.         },{\nCCS(P)>},{ ccs1;
  54.         });
  55.         test(,,{\nCCS(N)>},{read2},{\nCCS(P)>},{read2});
  56.         test(,,{\nCCS(N)>},,{\nCCS(P)>});
  57.     });
  58.     IndexLine:={済}|@getchar(IndexLine,3,80);
  59.     write(SaveFName,IndexLine);
  60. };
  61.  
  62. %PreRead{
  63.     case(@getchar(IndexLine,1,2)={予},
  64.     {Yes},{    ReadOnes;
  65.     },{No},{write(SaveFName,IndexLine);
  66.     });
  67. };
  68.  
  69. %Read{
  70.     delfile(SaveFName);
  71.     fopen(IndexFName);
  72.     loop({    IndexLine:=@fread;
  73.         case(@getchar(IndexLine,8,5),
  74.               {Read },{PreRead;
  75.                    im({Yes});
  76.             },{}     ,{im({No});
  77.             },     ,{write(SaveFName,IndexLine); im({Yes});
  78.         });
  79.     });
  80.     fclose;
  81.     copyfile(SaveFName,IndexFName);
  82. };
  83.  
  84. %DownOne{
  85.     var DataSize[4];
  86.  
  87.     %Diskrem{[dir]
  88.         var remain[10];
  89.         %curdir    @getcdir;
  90.         %path   @body(dir,,{\});
  91.         case(@getchar(dir,2,1),
  92.           {:},{    case(@setcdir2(path),
  93.              {Yes},{remain:=@diskrem;
  94.                 setcdir(curdir);
  95.             },{No},{remain:={-1};
  96.             });
  97.         },   ,{    remain:=@diskrem;
  98.         });
  99.         im(remain);
  100.     };
  101.  
  102.     %EnterLib{[ReqForum,ReqLib]
  103.         case(Where1<>{FORUM} || Where2<>ReqForum,{Yes},{
  104.             %ForumDir logd|{\}|@head(ReqForum,{ });
  105.             GoForum(ReqForum);
  106.         });
  107.         case(Where3<>{LIB} || FLibNO<>ReqLib,{Yes},{
  108.             type({LIB }|ReqLib|{\n});
  109.             wait(60,{stop},{\nLIB>});
  110.             Where3:={LIB};
  111.             FLibNO:=ReqLib;
  112.         });
  113.     };
  114.  
  115.     %DownLib{[ReqProc]
  116.         var FNametop[50];
  117.         var flag[4];
  118.         %ReqForum    @getchar(IndexLine,14,8);
  119.         %ReqLib        @getchar(IndexLine,23,2);
  120.         %ReqObj          @tail(@getchar(IndexLine,26,5),{ });
  121.         %DownFN        @getchar(IndexLine,32,80);
  122.         %DownDoc    @head(@tail(DownFN,{\},{\n}),{.})|{.SUP};
  123.  
  124.         footnote({ ライブラリからのダウンロード処理をしています});
  125.         case(@body(DownFN,,{\})={},
  126.             {Yes},{    FNametop:=logf|{\};
  127.             },{No},{FNametop:=@body(DownFN,,{\})|{\};
  128.         });
  129.         mkdir(FNametop,{});
  130.         delfile(FNametop|DownDoc);
  131.         flag:={Yes};
  132.         EnterLib(ReqForum,ReqLib);
  133.         type({DOWN }|ReqObj|{ PROT:BPL\n});
  134.         receive(FNametop|DownDoc);
  135.         case(@im(ReqProc),
  136.         {予},{
  137.             loop({
  138.             wait(6000,{TimeOut;
  139.             },{参照},{
  140.                 %size    @head(@laststr,{バイト:},{ });
  141.                 DataSize:=(size / 1024 + 1);
  142.                 im({Yes});
  143.             },{\nmore>},{type({\n}); im({Yes});
  144.             },{E:終了)\n:},{
  145.                 stoprec;
  146.                 case((@Diskrem(DownFN)/1024)>DataSize,
  147.                 {Yes},{    type({1\n});
  148.                     im({Yes});
  149.                 },{No},{type({E\n});
  150.                     im({No});
  151.                 });
  152.             },{-該当するデータはありません-\nLIB>},{
  153.                 stoprec; flag:={No};
  154.                 im({No});
  155.             },{で終了)\n:},{
  156.                 delfile(FNametop|DownFN);
  157.                 type(FNametop|DownFN);
  158.                 im({No});
  159.             },{-ダウンロード終了-\nLIB>},{
  160.                 flag:={No};
  161.                 im({No});
  162.             });
  163.             });
  164.             case(flag,{Yes},{wait(6000,{TimeOut},{\nLIB>})});
  165.             IndexLine:={済}|@getchar(IndexLine,3,80);
  166.             write(SaveFName,IndexLine);
  167.         },{説},{
  168.             loop({
  169.             wait(3600,{TimeOut;
  170.             },{\nmore>},    {type({\n}); im({Yes});
  171.             },{E:終了)\n:},{stoprec;
  172.                      type({E\n}); im({No});
  173.             },{-該当するデータはありません-\nLIB>},{
  174.                 stoprec; flag:={No};
  175.                 im({No});
  176.             });
  177.             });
  178.             case(flag,{Yes},{wait(60,{TimeOut},{\nLIB>})});
  179.             IndexLine:={保}|@getchar(IndexLine,3,80);
  180.             write(SaveFName,IndexLine);
  181.             });
  182.     };
  183.  
  184.     %PreDownLib{
  185.         case(@getchar(IndexLine,1,2),
  186.               {予},{DownLib({予});
  187.             },{説},{DownLib({説});
  188.             },{保},{write(SaveFName,IndexLine);
  189.         });
  190.     };
  191.  
  192.     %oneLib{[libno]
  193.         %mergefile1{[OldName,NewName]
  194.             dispoff({Yes});
  195.             case(@filechk(NewName),
  196.             {Yes}, {command({copy }|NewName|{+}
  197.                            |OldName|{ }|NewName);
  198.             },{No},{command({copy }|OldName|{ }|NewName);
  199.             });
  200.             dispoff({No});
  201.         };
  202.  
  203.         %renfile{[OldName,NewName]
  204.             dispoff({Yes});
  205.             command({ren }|OldName|{ }|NewName);
  206.             dispoff({No})
  207.         };
  208.  
  209.         %readdir{
  210.             var oldnum[4];
  211.             var newnum[4];
  212.             %LogFile LibDir|{\LIB}|LibNum|{.LOG};
  213.             %BakFile LibDir|{\LIB}|LibNum|{.BAK};
  214.             %TmpFile LibDir|{\LIB}|LibNum|{.TMP};
  215.             %mergelog{
  216.             case(@fopen(LogFile),
  217.             {Yes},{
  218.                 oldnum:=@getchar(@fread(18,{/}),1,4)+{0};
  219.                 fclose;
  220.                 case(@fopen(TmpFile),{Yes},{
  221.                 loop({
  222.                     %rec @fread(18,{/});
  223.                     newnum:=@getchar(rec,1,4)+{0};
  224.                     case(oldnum<newnum,{Yes},{
  225.                     write(BakFile,rec);
  226.                     });
  227.                     im(rec<>{});
  228.                 });
  229.                 mergefile1(LogFile,BakFile);
  230.                 delfile(TmpFile);
  231.                 delfile(LogFile);
  232.                 renfile(BakFile,{*.LOG});
  233.                 });
  234.             },{No},{
  235.                 case(@filechk(TmpFile),{Yes},{
  236.                 renfile(TmpFile,{*.Log});
  237.                 });
  238.             });
  239.             };
  240.  
  241.             FLibNO:=libno;
  242.             delfile(BakFile);
  243.             case(@fopen(LogFile),
  244.             {Yes},{
  245.             %rec @fread(18,{/});
  246.             oldnum:=@getchar(rec,1,4)+{0};
  247.             fclose;
  248.             },{No},{
  249.             oldnum:={0};
  250.             });
  251.             delfile(TmpFile);
  252.             case(oldnum<>{0},
  253.             {Yes},{
  254.               type({DIR\n});
  255.               receive(TmpFile);
  256.               loop({
  257.              wait(10000,{TimeOut},
  258.              {\nmore>},{
  259.                 %rec @tail(@head(@laststr(128),{\nmore>}),{\n});
  260.                 newnum:=@getchar(rec,1,4)+{0};
  261.                 case(newnum>oldnum,
  262.                 {Yes},{
  263.                 type({\n}); im({Yes});
  264.                 },{No},{
  265.                 stoprec;type({E\n}); im({No});
  266.                 });
  267.              },{\n>},{
  268.                 stoprec;type({E\n}); im({No});
  269.              },{ありません-\n},{
  270.                 stoprec;delfile(TmpFile); im({No});
  271.              });
  272.               });
  273.             },{No},{
  274.             case(NoLibLog<>{},
  275.             {Yes},{    type({SET LINE }|NoLibLog|{\n});
  276.             },{No},{type({SET PAGE OFF\n});
  277.             });
  278.             wait(10,,{\nLIB>});
  279.             type({DIR\n});
  280.             receive(TmpFile);
  281.             wait(10000,{TimeOut},
  282.             {\nmore>},{
  283.                 stoprec;type({E\n}); im({No});
  284.             },{\n>},{
  285.                 stoprec;type({E\n}); im({No});
  286.             },{ありません-\n},{
  287.                 stoprec; delfile(TmpFile); im({No});
  288.             });
  289.             wait(30,{TimeOut},{\nLIB>});
  290.             case(NoLibLog,{},{
  291.                 type({SET PAGE OFF\n});
  292.                 wait(30,{TimeOut},{\nLIB>});
  293.             });
  294.             type({SET LINE }|LibLine|{\n});
  295.             });
  296.             wait(30,{TimeOut},{\nLIB>});
  297.             mergelog;
  298.             case(@filechk(LogFile),
  299.             {Yes},{ delfile(BakFile);
  300.             },{No},{renfile(BakFile,{*.LOG});
  301.             });
  302.         };
  303.         readdir;
  304.     };
  305.  
  306.     %LibList{[ReqLib]
  307.         %plus{[DATA]
  308.             case(@nochar(DATA),1,{im({0}|DATA)},2,{im(DATA)});
  309.         };
  310.         case(ReqLib<>{},{Yes},{
  311.             var f3[50];
  312.             f3:=ReqLib;
  313.             type({SET PAGE ON\n});
  314.             wait(10,,{\n>});
  315.             case(LibLine<>{},{Yes},{
  316.                 type({SET LINE }|LibLine|{\n});
  317.                 wait(10,,{\n>});
  318.             });
  319.             loop({
  320.                 %LibNum    @plus(@head(f3,{,}));
  321.                 f3:=@body(f3,{,});
  322.                 type({LIB }|LibNum|{\n});
  323.                 wait(60,,
  324.                 {\nLIB>},{  oneLib(LibNum);
  325.                 },{\nmore>},{type({\n});
  326.                 },{\n>},{
  327.                 });
  328.                 im(f3<>{});
  329.             });
  330.             case(LibLine<>{},{Yes},{
  331.                 type({SET LINE 25\n});
  332.                 wait(10,,{\n>},,{\nLIB>});
  333.             });
  334.         });
  335.     };
  336.  
  337.     %GetLibTitle{[ReqForum]
  338.         case(Where1<>{FORUM} || Where2<>ReqForum,{Yes},{
  339.             %ForumDir logd|{\}|@head(ReqForum,{ });
  340.             GoForum(ReqForum);
  341.         });
  342.         delfile(LibDir|{\LIBTITLE.LOG});
  343.         receive(LibDir|{\LIBTITLE.LOG});
  344.         type({LIB\n});
  345.         wait(60,{},{\n>},{stoprec; LibList(ReqLib)});
  346.     };
  347.  
  348.     %DownList{
  349.         case(lib<>{} && lib<>0,{Yes},{
  350.         var f2[600];
  351.         f2:=lib;
  352.         loop({
  353.             %fnset        @head(f2,{/});
  354.             %ReqForum    @head(fnset,{(});
  355.             %ReqLib        @body(fnset,{(},{)});
  356.             %LibDir        logl|{\}|ReqForum;
  357.             f2:=@body(f2,{/});
  358.             footnote({ ライブラリリストの受信処理をしています});
  359.             mkdir(logl,ReqForum);
  360.             GetLibTitle(ReqForum);
  361.             im(f2<>{})
  362.         });
  363.         IndexLine:={済}|@getchar(IndexLine,3,80);
  364.         write(SaveFName,IndexLine);
  365.         });
  366.     };
  367.  
  368.     %NEWs{
  369.         %NewsNo    @tail(@getchar(IndexLine,23,2),{ });
  370.         %GoNEW{
  371.             type({GO NEW\n});
  372.             wait(20,{TimeOut},{\n>});
  373.             Where1:={NEW};
  374.             type({SET PAGE OFF\n});
  375.             wait(30,{TimeOut},{\n>});
  376.         };
  377.         %TypeM{
  378.             type({M\n});
  379.             wait(30,{TimeOut},{\n>});
  380.         };
  381.         case(Where1<>{NEW},{Yes},{GoNEW},{No},{TypeM});
  382.         test(,,{\n>},{
  383.             mkdir(logd,{MAIL});
  384.             receive(logd|{\MAIL\NEW.LOG});
  385.             type(NewsNo|{\n});
  386.             wait(300,{TimeOut},{\n表示終了\n>},,{下さい◆\n>});
  387.             stoprec;
  388.             IndexLine:={済}|@getchar(IndexLine,3,80);
  389.             write(SaveFName,IndexLine);
  390.         });
  391.     };
  392.  
  393. /**********  Main Routine   **********/
  394.     delfile(SaveFName);
  395.     fopen(IndexFName);
  396.     loop({    IndexLine:=@fread;
  397.         case(@getchar(IndexLine,8,5),
  398.               {LIB  },{PreDownLib; im({Yes});
  399.             },{List },{DownList; im({Yes});
  400.             },{Read },{PreRead; im({Yes});
  401.             },{NEW  },{NEWs; im({Yes});
  402.             },{}     ,{im({No});
  403.             },     ,{write(SaveFName,IndexLine); im({Yes});
  404.         });
  405.     });
  406.     fclose;
  407.     copyfile(SaveFName,IndexFName);
  408. };
  409.  
  410. code({sjis});
  411. case(proc={Read},{Yes},{Read},{No},{DownOne});
  412. next:={No};
  413. footnote({});
  414.